<?php
/**
 * @link https://www.kancloud.cn/cleverstone/ymb2
 * @copyright Copyright (c) 2020 Yii Manager Software LLC
 */

namespace builder\tree_table\util\ttthead;

use builder\helper\Str;
use yii\helpers\Html;

class Switch1 extends TheadColumnOption
{
    /**
     * @var array
     */
    private $_options = [
        'type' => '__switch', // 列类型
        'field' => '',      // 列字段
        'title' => '',      // 表格标题
        'help' => '',       // 列帮助提示
        'width' => null,    // 当前列宽度
        'minWidth' => 60,   // 当前列的最小宽度
        'maxWidth' => 0,    // 当前列的最大宽度
        'style' => '',      // 单元格样式
        'align' => 'left',  // 单元格排列方式
        'route' => '',      // url/yii路由
        'ctrlField' => '',  // 控制字段；当该字段值为true时，允许操作；为false时，禁用操作
        'params' => [],     // 参数
        'label' => '',      // 开关标签，如：正常|禁用 、 On|Off
        'afterEditedCallback' => 0, //编辑成功后, 是否回调刷新页面
    ];

    /**
     * Field constructor.
     * @param $field
     */
    public function __construct($field)
    {
        $this->_options['field'] = $field;
    }

    /**
     * @param string $title 列标题
     * @return $this
     */
    public function title($title)
    {
        $this->_options['title'] = Str::escapeCRLF((string)$title);
        return $this;
    }

    /**
     * @param string|array $route url/yii路由
     * @return $this
     */
    public function route($route)
    {
        $this->_options['route'] = $route;
        return $this;
    }

    /**
     * @param string $ctrlField 控制字段；当该字段值为true时，允许操作；为false时，禁用操作
     * @return $this
     */
    public function ctrlField($ctrlField)
    {
        $this->_options['ctrlField'] = (string)$ctrlField;
        return $this;
    }

    /**
     * @param array $params 路由参数
     * * 支持的路由参数形式
     * * - ['field']
     * * - ['field' => 1]
     * * - ['field' => ':field2']
     * @return $this
     */
    public function params(array $params)
    {
        $this->_options['params'] = $params;
        return $this;
    }

    /**
     * @param string $on 开标签
     * @param string $off 关标签
     * @return $this
     */
    public function label($on, $off)
    {
        $this->_options['label'] = $on . '|' . $off;
        return $this;
    }

    /**
     * @param string $help 列帮助提示语
     * @return $this
     */
    public function help($help)
    {
        $this->_options['help'] = (string)Html::encode($help);
        return $this;
    }

    /**
     * @param string|int $width 单元格宽度, 支持数字和百分比
     * @return $this
     */
    public function width($width)
    {
        $this->_options['width'] = $width;
        return $this;
    }

    /**
     * @param int $minWidth 最小宽度
     * @return $this
     */
    public function minWidth($minWidth)
    {
        $this->_options['minWidth'] = (int)$minWidth;
        return $this;
    }

    /**
     * @param int $maxWidth 最大宽度
     * @return $this
     */
    public function maxWidth($maxWidth)
    {
        $this->_options['maxWidth'] = (int)$maxWidth;
        return $this;
    }

    /**
     * @param array|string $style 单元格样式
     * @return $this
     */
    public function style($style)
    {
        $this->_options['style'] = $style;
        return $this;
    }

    /**
     * 单元格居中排列
     * @return $this
     */
    public function alignCenter()
    {
        $this->_options['align'] = 'center';
        return $this;
    }

    /**
     * 单元格居右排列
     * @return $this
     */
    public function alignRight()
    {
        $this->_options['align'] = 'right';
        return $this;
    }

    /**
     * 操作成功后刷新列表
     * @return $this
     */
    public function editedCallbackRefresh()
    {
        $this->_options['afterEditedCallback'] = 1;
        return $this;
    }

    /**
     * @return array
     */
    public function _toArray()
    {
        return $this->_options;
    }
}